畫面或 UI state 會包含畫面上要顯示的內容 (例如日記清單)。由於這個狀態含有應用程式資料,因此通常連結著 app 架構的其他層。
此系列文章是以我的業餘專案: Kimoji 作為範例。
這款以純 Jetpack Compose 撰寫的 side project,已經在 Google Play 上架。 歡迎試玩!
立馬下載
UI state 可以描述畫面上要顯示的內容,而應用程式邏輯可以描述應用程式的行為,以及如何回應狀態變更。我們撰寫的邏輯有兩種類型: UI 邏輯(或稱 UI 行為),以及事務邏輯。
Snackbar
)。ViewModel
會提供 UI 狀態,並能存取應用程式其他層的事務邏輯。另外 ViewModel
也能在 configuration changes 後繼續保留,所以生命週期比 Composition 要長。ViewModel
可以 follow Activity
、Fragment
,以及 Navigation graph destination 的 lifecycle。
如果想深入瞭解 UI 層架構,請參閱 UI layer 說明文件。
注意:
ViewModel
並非 Composition 的一部分。因此我們不應該在ViewModel
裡去持有 composables 內建立的狀態 (例如 remembered value),這樣做可能會導致 memory leaks。
此系列文章是以我的業餘專案:Kimoji 為範例。
Kimoji 是一款心情日記 App,讓你用可愛的 emoji 來撰寫你的心情日記。現在就來試試這款設計精美的微日記吧!
立馬下載
Reference: https://developer.android.com/codelabs/jetpack-compose-state